力扣题目汇总(丑数,重复N的元素,求众数)

丑数

1.题目描述

  1. 编写一个程序判断给定的数是否为丑数。

    丑数就是只包含质因数 2, 3, 5正整数

    示例 1:

    输入: 6
    输出: true
    解释: 6 = 2 × 3
    
   
**示例 2:**
   

输入: 8
输出: true
解释: 8 = 2 × 2 × 2

   
   **示例 3:**
   

输入: 14
输出: false
解释: 14 不是丑数,因为它包含了另外一个质因数 7。


**说明:**

1. `1` 是丑数。
2. 输入不会超过 32 位有符号整数的范围: [−231,  231 − 1]。

### 2.解题思路

```python
从题目描述上将,是判断一个数是否能被,2,3,5除,然后被这几个数除会余数肯定为0,而且除到最后他会变成1

3.解题

class Solution:
    def isUgly(self, num: int) -> bool:
        if num == 0:
            return False
        div = [2, 3, 5]
        for x in div:
            while num % x == 0:
                num /= x
        return num == 1

重复 N 次的元素

1.题目描述

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

**示例 1:在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。

返回重复了 N 次的那个元素。

示例 1:

输入:[1,2,3,3]
输出:3

示例 2:

输入:[2,1,2,5,3,2]
输出:2

示例 3:

输入:[5,1,5,2,5,3,5,4]
输出:5

提示:

  1. 4 <= A.length <= 10000
  2. 0 <= A[i] < 10000
  3. A.length 为偶数

2.解题思路

#方法1 用list内置函数.count 进行计数
#把里面的元素变成字典,根据字典进行计数

3.解题

class Solution:
    def repeatedNTimes(self, A: List[int]) -> int:
        #方法1
        # A_1 = set(A)
        # A_1 = list(A_1)
        # for a in A_1:
        #     if A.count(a) == len(A)/2:
        #         return a
        #         break
        # 超时
        #方法二
        dic = {}
        for a in A:
            if a not in dic:
                dic[a]=1              #把里面数字生成字典的KEY并且计数为1
            else:
                dic[a]+=1            #把里面的数字每碰到相同的加1
        num = len(A)/2
        for b in dic:
            if dic[b] == num:
                return b
                break

求众数

1题目描述

    • 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

      你可以假设数组是非空的,并且给定的数组总是存在众数。

      示例 1:

      输入: [3,2,3]
      输出: 3
      

      示例 2:

      输入: [2,2,1,1,1,2,2]
      输出: 2
      

2.解题思路

方法1:根据list进行count进行计数
方法2:生成字典

3.解题

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        #方法1
        # new_list = []
        # for a in nums:
        #     if nums.count(a) >len(nums)/2:
        #         new_list.append(a)
        # return max(set(new_list))
        #超时
        #方法二
        dic = {}
        for a in nums:
            if a not in dic :
                dic[a] = 1
            else:
                dic[a] += 1
        return max(dic,key=dic.get)         #根据字典里面的值最大取出他的关键字

```有更加好的思路,或者解题方法评论区留言谢谢``

posted @ 2019-05-24 11:20  小小咸鱼YwY  阅读(649)  评论(0编辑  收藏  举报